#ifndef _RT_OS_H_
#define _RT_OS_H_
/******************************************************************************
*	Name:   ROS33   relocation   table
*
*	MODULE : ROS33
*
* 	LOG: Start   2001.12.30
*
*******************************************************************************/
typedef struct{
/* Task Management Functions */
	ER   (*ros33_sta_tsk)( ID tskid, INT stacd );
	void (*ros33_ext_tsk)( );
	ER   (*ros33_ter_tsk)(ID tskid );
	ER   (*ros33_dis_dsp)( );
	ER   (*ros33_ena_dsp)( );
	ER   (*ros33_chg_pri)(ID tskid, PRI tskpri );
	ER   (*ros33_rot_rdq)(PRI tskpri );
	ER   (*ros33_rel_wai)( ID tskid );
	ER   (*ros33_get_tid)( ID *p_tskid );

/* Task-Dependent Synchronization Functions */
	ER   (*ros33_sus_tsk)( ID tskid );
	ER   (*ros33_rsm_tsk)( ID tskid );
//	ER   (*slp_tsk)();
	ER   (*ros33_tslp_tsk)(TMO tmout );
	ER   (*ros33_wup_tsk)( ID tskid );
	ER   (*ros33_can_wup)( INT *p_wupcnt, ID tskid );

/* Synchronization and Communication Functions */
	ER   (*ros33_sig_sem)( ID semid );
//	ER   (*wai_sem)( ID semid );
//	ER   (*preq_sem)( ID semid );
	ER   (*ros33_twai_sem)( ID semid, TMO tmout );
	ER   (*ros33_set_flg)( ID flgid, UINT setptn );
	ER   (*ros33_clr_flg)( ID flgid, UINT clrptn );
//	ER   (*wai_flg)( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
//	ER   (*pol_flg)( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
	ER   (*ros33_twai_flg)( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode,TMO tmout );
	ER   (*ros33_snd_msg)( ID mbxid, T_MSG *pk_msg );
//	ER   (*rcv_msg)( T_MSG **ppk_msg, ID mbxid );
//	ER   (*prcv_msg)( T_MSG **ppk_msg, ID mbxid );
	ER   (*ros33_trcv_msg)( T_MSG **ppk_msg, ID mbxid, TMO tmout );

/* Interrupt Management Functions */
	void (*ros33_ret_int)( );
	ER   (*ros33_ent_int)( );
	ER   (*ros33_loc_cpu)( );
	ER   (*ros33_unl_cpu)( );

/* Time Management Functions */
	ER   (*ros33_set_tim)( SYSTIME *pk_tim );
	ER   (*ros33_get_tim)(SYSTIME *pk_tim );
	ER   (*ros33_dly_tsk)( DLYTIME dlytim );
	ER   (*ros33_def_cyc)( HNO cycno, FP cychdr, UINT cycact, SYSTIME *pk_cyctim );
	ER   (*ros33_act_cyc)( HNO cycno, UINT cycact );
	ER   (*ros33_def_alm)( HNO almno, FP almhdr, UINT tmmode, SYSTIME *pk_almtim );
	void (*ros33_ret_tmr)( );

/* System Management Functions */
	ER   (*ros33_get_ver)( T_VER *pk_ver );

/* Extended Synchronization and Communication Functions */
//	ER   (*snd_mbf)(ID mbfid, VP msg, INT msgsz );
//	ER   (*psnd_mbf)(ID mbfid, VP msg, INT msgsz );
	ER   (*ros33_tsnd_mbf)(ID mbfid, VP msg, INT msgsz, TMO tmout );
//	ER   (*rcv_mbf)(VP msg, INT *p_msgsz, ID mbfid );
//	ER   (*prcv_mbf)(VP msg, INT *p_msgsz, ID mbfid );
	ER   (*ros33_trcv_mbf)(VP msg, INT *p_msgsz, ID mbfid, TMO tmout );

/* Memory Pool Management Functions */
//	ER   (*get_blk)(VP *p_blk, ID mplid, INT blksz );
//	ER   (*pget_blk)(VP *p_blk, ID mplid, INT blksz );
	ER   (*ros33_tget_blk)(VP *p_blk, ID mplid, INT blksz, TMO tmout );
	ER   (*ros33_rel_blk)(ID mplid, VP blk );
//	ER   (*get_blf)(VP *p_blf, ID mpfid );
//	ER   (*pget_blf)(VP *p_blf, ID mpfid );
	ER   (*ros33_tget_blf)(VP *p_blf, ID mpfid, TMO tmout );
	ER   (*ros33_rel_blf)(ID mpfid, VP blf );

// system call from interrupt handler
/* include in sysRos33.h  */
	ER   (*ros33_iwup_tsk)( ID tskid );
	ER   (*ros33_isig_sem)( ID semid );
	ER   (*ros33_iset_flg)( ID flgid, UINT setptn );
	ER   (*ros33_isnd_msg)( ID mbxid, T_MSG *pk_msg );
	ER   (*ros33_ipsnd_mbf)( ID mbfid, VP msg, INT msgsz );
	ER   (*ros33_ipget_blk)( VP *p_blk, ID mplid, INT blksz );
	ER   (*ros33_ipget_blf)( VP *p_blf, ID mpfid );
	ER   (*ros33_irel_blk)( ID mplid, VP blk );
	ER   (*ros33_irel_blf)( ID mpfid, VP blf );

	ER   (*ros33_vcre_tsk)( ID tskid, FP task, PRI tskpri, UW istkadr );
	ER   (*ros33_vcre_mbf)( ID mbfid, VP  msgbuf, INT bufsz, INT maxmsz );
	ER   (*ros33_vcre_mpl)( ID mplid, VP start_addr, VP end_addr );
	ER   (*ros33_vcre_mpf)( ID mpfid, VP start_addr, VP end_addr, INT blfsz );
	ER   (*ros33_vchg_semcnt)(ID semid, UB semcnt);
	int  (*ros33_vchk_timer)();

	void (*ros33_sys_clk)();
	void (*ros33_sys_sta)();
	void (*ros33_sys_ini)();
	
}T_ROS33_RelocationTable;

#endif

